/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package besa_adaptado.filtros;

import adaptation.common.filter.FilterAES;
import adaptation.common.filter.FilterResultAES;
import adaptation.common.ProfileAES;
import besa_adaptado.perfiles.PerfilLocalizacion;
import java.util.List;
import java.util.Map;

/**
 *
 * @author Ayllu
 * Este ejemplo de filtro de localización toma como base la intensidad de la señal WiFi (normalizada de 0 a 1)
 * Y como resultado da un calificativo de la experiencia
 */
public class FiltroLocalizacion extends FilterAES {

    public FiltroLocalizacion(String category, List<String> subcategories) {
        super(category, subcategories);
    }

    public FiltroLocalizacion(String category) {
        super(category);
    }

    @Override
    public FilterResultAES doFilter(List<ProfileAES> aList) {
        String nivel = "";
        float intensidad;
        for (ProfileAES ProfileAES : aList) {
            PerfilLocalizacion locationProfile = (PerfilLocalizacion) ProfileAES;
            if (ProfileAES.getCategory().equals(this.getCategory())) {
                Map<String,Float> conect =  locationProfile.getConectividad();
                for (String str : conect.keySet()) {
                    nivel += str + "->";
                    intensidad = conect.get(str);
                    if (intensidad <= 0.3f) {
                        nivel += "Baja";
                    } else if (intensidad > 0.3f && intensidad <= 0.5f) {
                        nivel += "Media";
                    } else if (intensidad > 0.5f && intensidad <= 0.7f) {
                        nivel += "Alta";
                    } else if (intensidad > 0.7f) {
                        nivel += "Excelente";
                    }
                    nivel += ",";
                }

            }

        }
        return new ResultadoFiltro("Conectividad: " + nivel);
    }
}
